#include <stdio.h>
#include <math.h>

/**
 * 这里用了math库文件中的反三角函数来求解Pi的值，
 * 但是刘老师要求大家尽量不要使用math库，所以说你们不能这么写。。。。
 */
const double Pi = acos(-1);


/**
 * 角度转换，其实可以不用函数，这里为了函数而函数
 * 输入角度值，返回将角度转换到[0, 2Pi]之间的弧度值
 */
double AngleChange(double);


/**
 * 这个函数求x的n次方，这个确实有必须要定义成一个函数
 */
double Pow(double, int);


// 首先声明函数，获取小数的位数, 输入的为double，
int GetDigit(double);


/**
 * 阶乘函数，实验为了体现函数的作用，所以这里求解阶乘单独定义为一个函数
 * 但这么做并不是时间和空间最优的办法，只有整数才可以求阶乘，这里的输入可以定义位int也可以定义为double, 我这里定义为int
 */
double Factorial(int);


/**
 * 这是判断正负的函数，为了函数而函数，所以这里我也声明这么一个函数
 */ 
int Symbol(int);

int main()
{
    double e, x;
    scanf("%lf%lf", &e, &x);
    x = AngleChange(x);
    double ans = 1.0;
    int n = 2;
    double last = Pow(x, n) / Factorial(n);
    while ( last >= e )
    {
        ans = ans + Symbol(n) * last;
        n += 2;
        last = Pow(x, n) / Factorial(n);
    }
    printf("%.*lf\n", GetDigit(e), ans);
    return 0;
}

/**
 * 角度准换函数的实现
 */ 
double AngleChange(double x)
{
    double angle = x > 0 ? x : -1.0 * x;
    return (angle - 360 * int(angle / 360)) / 360 * 2.0 * Pi;
}



/**
 * 阶乘函数的实现
 */ 
double Pow(double x, int n)
{
    double ans = 1.0;
    int num = n;
    if( n == 0)
        return 1;
    while ( num  > 0)
    {
        ans *= x;
        num--;
    }
    return ans;
}



/**
 * 由于我限定了输入的精度，所以这里我可以这么直接来求解小数的位数
 */ 
int GetDigit(double x)
{
    int ans = 0;
    double num = x;
    while (int(num) < 1 )
    {
        ans++;
        num *= 10;
    }
    
    return ans;
}



/**
 * 返回n的阶乘
 */
double Factorial(int n)
{
    double ans = 1.0;
    int num = n;
    while ( num > 0 )
    {
        ans *= num;
        num--;
    }
    return ans;
}



/**
 * 根据n的值返回-1或者+1
 */
int Symbol(int n)
{
    return (n / 2) % 2 ? -1 : 1;
}